#C 语言标准库头文件 locale.h
这个头文件提供 本地化 的相关功能,例如设置数字和货币的格式。
#include <stdio.h>
#include <locale.h>
#include <time.h>
int main(void) {
char *old_locale = setlocale(LC_ALL, NULL);
printf("当前locale: %s\n", old_locale);
char *new_locale = setlocale(LC_ALL, "en_US.UTF-8");
if (new_locale == NULL) {
printf("无法设置locale\n");
return 1;
}
printf("新locale: %s\n", new_locale);
printf("\n数字格式示例:\n");
printf("本地格式: %'d\n", 123456789);
printf("默认格式: %d\n", 123456789);
struct lconv *lc = localeconv();
printf("\n货币格式示例:\n");
printf("本地货币符号: %s\n", lc->currency_symbol);
printf("正数货币格式: %s%.2f\n", lc->currency_symbol, 1234.56);
time_t t = time(NULL);
struct tm *lt = localtime(&t);
char time_str[100];
strftime(time_str, sizeof(time_str), "%c", lt);
printf("\n本地时间格式: %s\n", time_str);
strftime(time_str, sizeof(time_str), "%x", lt);
printf("本地日期格式: %s\n", time_str);
strftime(time_str, sizeof(time_str), "%X", lt);
printf("本地时间格式: %s\n", time_str);
setlocale(LC_ALL, old_locale);
return 0;
}
运行结果:
当前locale: C
新locale: en_US.UTF-8
数字格式示例:
本地格式: 123,456,789
默认格式: 123456789
货币格式示例:
本地货币符号: $
正数货币格式: $1234.56
本地时间格式: Wed 11 Jun 2025 06:51:05 AM UTC
本地日期格式: 06/11/2025
本地时间格式: 06:51:05 AM
本地化类别宏 | 标准 | 说明 |
---|
LC_ALL | C89 | 整个 C 语言环境 |
LC_COLLATE | C89 | 排序规则类别 |
LC_CTYPE | C89 | 字符分类类别 |
LC_MONETARY | C89 | 货币格式化类别 |
LC_NUMERIC | C89 | 数值格式化类别 |
LC_TIME | C89 | 时间格式化类别 |
本地化类别宏 | 标准 | 说明 |
---|
setlocale | C89 | 获取和设置区域 |
localeconv | C89 | 获取当的前格式化详细信息 |
#推荐阅读